package zaijiansunwukong;

// import com.lowagie.text.pdf.BaseFont;
// import com.lowagie.text.DocumentException;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.BaseFont;
import org.xhtmlrenderer.pdf.ITextRenderer;

import java.io.FileOutputStream;
import java.io.IOException;

public class HtmlToPdf {
    public static void main(String[] args) throws DocumentException, IOException {
        // String htmlFilePath = "sample.html";  // HTML文件路径
        String htmlString = "<!DOCTYPE html>\n" +
                "<html lang=\"zh\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\" />\n" +
                "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n" +
                "    <title>HTML to PDF Example</title>\n" +
                "    <style>\n" +
                "        body {\n" +
                "            font-family: \"Microsoft YaHei\", \"SimSun\", sans-serif;\n" +
                "            font-size: 16px;\n" +
                "        }\n" +
                "        p {\n" +
                "            color: #333;\n" +
                "        }\n" +
                "    </style>\n" +
                "</head>\n" +
                "<body>\n" +
                "    <h1>HTML 转 PDF 示例</h1>\n" +
                "    <p>这是一段中文文本。</p>\n" +
                "    <p>如果你看到这段中文，说明字体已经正确嵌入。</p>\n" +
                "</body>\n" +
                "</html>\n";  // HTML字符串
        String outputPdfPath = "output.pdf"; // 输出的PDF文件路径
        
        // 设置中文字体路径
        String fontPath = "E:\\javaWorkspace\\freemarker-html2pdf\\freemarker-html2pdf\\src\\main\\resources\\fonts\\simsun.ttc";  // Windows 系统下的 SimSun 字体路径
        // 对于 MacOS 或 Linux 用户，字体路径会有所不同，可能是类似 `/Library/Fonts/` 或 `/usr/share/fonts/`
        
        // 使用 Flying Saucer 渲染 HTML
        ITextRenderer renderer = new ITextRenderer();
        
        // 添加字体，指定字体路径并设置为支持中文
        renderer.getFontResolver().addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
        
        // 设置 HTML 内容文件
        // renderer.setDocumentFromFile(htmlFilePath);
        renderer.setDocumentFromString(htmlString);

        // 执行布局
        renderer.layout();
        
        // 输出 PDF 文件
        FileOutputStream fos = new FileOutputStream(outputPdfPath);
        renderer.createPDF(fos);
        
        System.out.println("PDF生成成功，文件路径：" + outputPdfPath);
    }
}
